#ifndef SYSTEM_PLUG_IN_H
#define SYSTEM_PLUG_IN_H

class System_Plugin
{
public:
	// These will be called ONCE do take note.
	virtual bool				Initialize(HGE_Impl * HGESystem, hgeTTF :: FontManager * FontManager, System_Audio * AudioSystem) = 0;
	virtual bool				Deinitialize() = 0;

	virtual const bool			Initialized() const = 0;	// If the plugin has already initialized

	virtual const std::string & About() = 0;
	// Return values from below in CAPS
	virtual const std::string & GetVersion() = 0;
	virtual const std::string & Type() = 0;	
};

class System_Plugin_Interface : public System_Plugin
{
public:
	// Set to some code to proceed to next phase
	// if not going to do anything leave blank ""
	virtual const std::string	ChangePhase() = 0;	

	virtual void				Update(const float & Interval) = 0;
	virtual void				Render() = 0;		
};


class System_Plugin_Map : public System_Plugin_Interface
{
public:
	//	virtual	bool	MoveCharacter() = 0;
	//	Set to Map name to switch over, after calling this, 
	//	screen will fade away and deinit this map while load other
	virtual const	std::string	GoToNextMap() = 0;
};
#endif